<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- FIN NOTE DE LICENCE ---------------------------------------

class cpServiceGadgets
{
	
	public static function initNouveauGadget()
	{
		
		global $core;
		
		# Permission nécessaire: gadgets
		$core->auth->verifierPermission('gadgets', true);		
		
		if(!array_key_exists($_POST['gadget_id'], $core->gadgets)) {
			throw new cpErreur(__('Donnée invalide'), 'gadget_id', 301);
		}
		
		$gadget = $core->getObjetGadget($_POST['gadget_id']);
		$gadget->setI($_POST['i']);
		$adminInterface = $gadget->adminInterface();
		
		return array(
			'erreur' 		=> 	0,
			'gadget_id'	 	=> $_POST['gadget_identifiant'],
			'html' 			=> 	$adminInterface['html'],
			'javascript' 	=> 	$adminInterface['javascript']
		);
		
	}
	
	public static function enregistrer()
	{
		
		global $core;
		
		# Permission nécessaire: gadgets
		$core->auth->verifierPermission('gadgets', true);		
		
		# Vérification du thème
		$core->chargerThemes();
		if(!array_key_exists($_POST['theme_id'], $core->themes)) {
			throw new cpErreur(__('Donnée invalide'), 'theme_id', 301);
		}
		
		# Début de la transaction
		$core->con->begin();		
		
		try {
			
			# Supprimer tous les gadgets existants pour le thème actuel:
			# ils seront recréés.
			$core->con->execute('DELETE FROM '.$core->prefix.'gadgets '.
						"WHERE theme_id = '".$core->con->escape($_POST['theme_id'])."'"	
			 );
			
			if(is_array($_POST['gadgetI']))
			{	
				
				# Boucle pour ajouter les gadgets à la DB
				$nb = count($_POST['gadgetI']);

				for($i=0; $i<$nb; $i++)
				{
					
					$gadgetI = $_POST['gadgetI'][$i];
					
					# Instance de cpGadget
					$gadget = $core->getObjetGadget($_POST['gadget_id'][$gadgetI]);
					$gadget->setI($gadgetI);

					# Données pour l'enregistrement
					$formParams = is_array($_POST['gadget'][$gadgetI]) ?
									$_POST['gadget'][$gadgetI] : array();
									
					$gadgetParams = array_merge(array(
						'theme_id' =>			$_POST['theme_id'],
						'zone_id' =>			$_POST['zone_id'][$gadgetI],
						'gadget_id' =>			$_POST['gadget_id'][$gadgetI],
						'affichage' =>			$_POST['affichage'][$gadgetI],
						'conditionsAffichage'=>	$_POST['conditionsAffichage'][$gadgetI],
						'gadget_titre' =>		$_POST['gadget'][$gadgetI]['titre']
					), $formParams);
					
					# Enregistrement
					$gadget->enregistrer($gadgetParams);
				
				}
				
			}
					 
			# Fin de la transaction
			$core->con->commit();
			
		} catch(cpErreur $e) {
			$core->con->rollback();
			throw new cpErreur($e->getMessage(), $e->getChamp(), $e->getCode());
			
		} catch(Exception $e) {
			$core->con->rollback();
			throw new cpErreur($e->getMessage(), null, $e->getCode());
		}
		
	}
	
}

?>